אני מעוניין לשלוף מהמסד שורה מסויימת, הידועה לי מראש, לפני שאר השורות, למשל, אני רוצה לשלוף את השורה בעלת הID מספר 5, לפני שאר השורות, לאחר מכן הסדר לא משנה לי / יסודר לפי ID. יש למישהו מושג? תודה מראש.
ניסיתי את
SELECT `dn`, `id` FROM `gallerydir` ORDER BY CASE `id` WHEN '{$r['dirid']}' THEN 0 ELSE 1 END, `id`

ללא הצלחה.

5 תשובות

avatar ענה intval ב 15 ליולי 2014 #

יכול להיות שיותר מהר יעבוד משהו כזה:

select * from tbl where id = 5
union
select * from tbl where id != 5


הקוד שלך היה אמור להיראות ככה:
select *, (case id when 5 then 1 else 0 end) as myrow
from Table1
order by myrow desc

אבל זה הרבה עבודה בשביל המסד (ליצור טבלה זמנית בזיכרון ואחר כך למיין אותה)

avatar ענה mmm ב 17 ליולי 2014 #

תודה אלכס, תשובה מפורטת ומועילה!

avatar ענה mmm ב 17 ליולי 2014 #

אוקיי, משהו מוזר:
ניסיתי את שתי השורות שנתת לי, וזה לא עבד, מדובר בשורה שמדפיסה ערכים לתוך תיבת SELECT, בתוך תג OPTION.
לאחר בדיקה הקודים אכן עובדים באופן הרצוי, אבל משום מה, בתוך תיבת הSELECT הם מופיעים לפי סדר המספרים שכתוב בVALUE. יש לך מושג?

avatar ענה intval ב 17 ליולי 2014 #

תוכל לצרף את הקוד שלך ואת הפלט שנוצר ממנו?

avatar ענה mmm ב 21 ליולי 2014 #

אוקיי, בעקרון הבנתי את הבעיה. ברגע שבתג OPTION, בVALUE יש מספר, ורק מספר, כרום מסדר את כל תגי הOPTION לפי מספרם, מהקטן לגדול, זה הכל. פשוט הוספתי אות לפני המספר, והבעיה נפתרה.